const { defineConfig, devices } = require('@playwright/test');

/**
 * Playwright配置文件
 * @see https://playwright.dev/docs/test-configuration
 */
module.exports = defineConfig({
  testDir: './tests',
  // 测试超时时间
  timeout: 30 * 1000,
  // 重试次数
  retries: process.env.CI ? 2 : 0,
  // 不能同时运行的测试工作者数量
  workers: process.env.CI ? 1 : undefined,
  
  // 测试报告配置
  reporter: [
    ['html'],  // 生成HTML报告
    ['list'],  // 命令行输出
    ['allure-playwright']  // Allure报告
  ],

  // 共享设置
  use: {
    // 基本URL，所有相对路径都基于此URL
    baseURL: 'http://localhost:8080',

    // 测试痕迹收集
    trace: 'on-first-retry',
    
    // 自动截图，在失败时截图
    screenshot: 'only-on-failure',
    
    // 录制视频，在失败时录制
    video: 'on-first-retry',
  },

  // 配置不同的项目运行环境
  projects: [
    {
      name: 'chromium',
      use: { ...devices['Desktop Chrome'] },
    },
    {
      name: 'firefox',
      use: { ...devices['Desktop Firefox'] },
    },
    {
      name: 'webkit',
      use: { ...devices['Desktop Safari'] },
    },
    {
      name: 'mobile-chrome',
      use: { ...devices['Pixel 5'] },
    },
    {
      name: 'mobile-safari',
      use: { ...devices['iPhone 12'] },
    },
  ],

  // 本地开发环境配置
  webServer: {
    command: 'npm run dev', // 使用Vue项目的开发服务器命令
    port: 8080,
    reuseExistingServer: !process.env.CI,
  },
}); 